摘要:从观象授时发展到推步制历的漫长岁月中存在一种过渡形态的历法。本文以《史记·龟策列传》宋元王占梦为线索,以众多出土文献和传世文献为依据,通过大六壬“日在加时”占法的追溯,挖掘出观象授时历向推步历过渡的形态——“月宿历”,并重新解读了《龟策列传》,纠正了钱大昕等先贤的错误。
关键词:月宿历 日在加时 龟策列传 梦占
作者冉景中,中央民族大学道教与数术学研究中心研究员、哲学博士(北京 100081)。
学界一致认为推步历的前身是观象授时历,观象授时的方法在《尚书·尧典》中有详细介绍,推步历即后来的四分历及其各种变形,如古六历、太初历、三统历等。而从观象授时到推步制历有一个漫长的过渡期,其间是否存在一种中间形态的历法呢?笔者发现答案隐藏在数术文献中,先来看看《史记·龟策列传》记载的一例神奇的梦占:
宋元王二年,江使神龟使于河……夜半,龟来见梦于宋元王……元王惕然而悟。乃召博士卫平而问之……卫平乃援式而起,仰天而视月之光,观斗所指,定日处乡……乃对元王曰:“今昔壬子,宿在牵牛……汉正南北……南风新至……斗柄指日,使者当囚。”
文中的占法该如何解释?学者看法不一。
清代大儒钱大昕说:“此遁甲式也。日在牵牛,冬至之侯,盖冬至后壬子日,庚子时。”清人张文虎认为是六壬式,也认为时间在冬至之后。严敦杰先生也认为是六壬式,“观斗所指,定日处乡”是定十二神将,这是六壬式子时丑将(冬至后)。观点与张氏相近。
判断为六壬式是对的,但是三位先生都将式占的时间定为冬至后子月,这值得商榷。如果梦占发生在冬至时节,乌龟已经冬眠;就算神龟不冬眠,但是彼时黄河结冰深厚,万物萧条,渔民一般处于修渔期;即使一定要打鱼,也不大可能在又冷又黑的半夜时分去做这样的事。然而占文中明确写道“宿在牵牛”,其时不在冬至又在何时?除非其含义并不是“日在牵牛”。看来此处大有文章,本文试图作一番深究,就从大六壬的基本占法“日在加时”之月将说起吧。
一、月将与日躔 [见英文版第18页,下同]
何谓“日在加时”?“日在”即日躔,指太阳的视运动在一个回归年沿黄道逆时针绕行,经过二十四节气时的位置。“时”即时辰,指太阳每天东升西落,它经过某个地平方位所对应的时间。在大六壬占法中,日躔用天盘表示,时辰用地盘表示。在某个确定的时间,太阳在天盘上有一个确定的位置,在地盘上也有一个确定的位置,旋转天盘,使这两个位置相重叠,得到的时空组合便是“日在加时”。
六壬式占管日躔区间叫月将,按照二十四节气起止点不同分成十二位,分别叫作徵明、天魁、从魁、传送、小吉、胜光、太乙、天罡、太冲、功曹、大吉、神后。
根据北宋司天监官员、天文学家杨惟德撰写的《景祐六壬神定经》有关章节《释月将》《释璧度》《释日度》的记载,可以知道至少在西汉末东汉初,大六壬十二月将是以立春、惊蛰、清明、立夏、芒种等十二节为起止点的,对应的星次以《三统历》为准。笔者将相关信息整理如表1所示。
现今出土的一件东汉初年的六壬式盘恰好可以印证这一结论。
其天盘和地盘的外围环绕二十八宿,二十八宿的外围都刻有小圆点,严敦杰先生认为大约都是182个,一点代表2度,即相当于365.25度。天盘中心是北斗,斗杓指天罡次列十二神将(月将)。十二神将的名字以及对应的星宿名称基本可辨,现在整理如表2所示。
式盘上的月将位置正好位于《三统历》十二次起止度数的中间,顺序无误,名称略有差异,天罡、徵明、天魁、太乙在式盤上分别为天冈、登明、魁、太一。这应该是流传过程中的通假字、异体字或者避讳字,本质上并无不同。显然,出土实物的形制与传世文献的记载以及它们曾经流行的时代若合符契,可证杨惟德所言不虚。
事实上,在那个时代斗柄所建(月建)与日躔星次的这种对应关系便是传统术数学地支六合原理之所在,如表1第二列、第三列所示:子丑、寅亥、卯戌、辰酉、巳申、午未六组地支相合,简称“六合”。
今天的学者大概误认为大六壬的十二月将有两种排法。李学勤先生认为这是两种次第颠倒的十二神排列。李零先生说:“上述各例中的十二神都是以徵明(正月)主亥,同于《五行大义·论诸神》引《玄女拭经》,但《景祐六壬神定经·释月将》引《金匮经》却是徵明主寅。前者沿用秦正,而后者是汉武帝以后改的正朔,则为后世六壬家所本。”李学勤先生的说法比较含糊,而李零先生的解释就错得很远了。两位先生著述甚丰,后学获益匪浅。但是对于他们在个别地方的不当见解,笔者大胆指出,以防止错误继续扩散。
二、西汉“六壬”式盘“月将”之考查 [20]
出土的六壬式盘中最古老的一件是西汉初年的,如图2所示。其形制与前面介绍的东汉初六壬式盘基本相同,但是天盘上没有十二月将的名称,只在相关星宿上逆时针列了“正”“二”“三”等十二个数字。严敦杰先生研究认为十二月将的名称出现在西汉末或稍前。其说可从。
式盘上数字与星宿的对应关系清晰可见,整理如表3所示。这十二个数字显然是指月份,很像是朔望月。通过上一节的讨论我们知道十二月将的演算是以二十四节气为基础的。但是,西汉式盘上的月份究竟是朔望月还是节气月呢?这个问题涉及西汉时期大六壬月将的运算规则,也为我们研究早期历法提供了线索,需要认真做一番考证。
笔者在传世文献和出土文献中寻找,发现支持朔望月的证据似乎更多。
宋代壬占大家邵彦和著《大六壬断案》记有一则案例,收入清人程树勋辑录的《壬占汇选》中:
庚辰年浙江大旱,八月癸丑日辰将辰时占雨泽……
邵彦和曰:“……太阴,月宿,十五日在戌,十六、十七日在酉,乃是月宿离于毕,毕在酉宫也。……但用月宿到今日,看临在酉,则是月离于毕也。”
这里的“太阴,月宿,十五日在戌,十六、十七日在酉,乃是月宿离于毕,毕在酉宫也”,显然是一种以月亮运行到二十八宿的某个位置来占卜吉凶的方法,本文将其称之为“月宿占法”,将其运算的基础称为“月宿历法”。
如何计算月宿呢?唐代《大六壬心镜》卷三《二烦课》(以下简称《心镜》)说:“正月室,二月奎,三月胃,四月毕,五月参,六月鬼,七月张,八月角,九月氐,十月心,十一月斗,十二月虚。”指每月朔宿。又说“每月初一日移宿起,加值奎井张翼,氐宿,皆留一日”,指出计算月宿的方法:从朔宿开始按日顺数,遇到奎、井、张、翼、氐宿,则重复一日。
更早期的大六壬经典《黄帝龙首经·占月宿何星法》(以下简称《龙首经》)明确规定每月朔日所在之宿,正月室,二月奎,三月胃,四月毕,五月井,六月柳,七月张,八月角,九月氐,十月心,十一月斗,十二月女,与西汉六壬式盘上的标记完全相同。此处还规定闰月的朔日为宿后一宿,比如正月朔在营室,那么闰正月朔在营室后一宿壁,但没有“加值奎井张翼,氐宿,皆留一日”的说法。
近年出土的战国、秦汉间的简帛上也有很多类似的记载,比如睡虎地秦简甲种《除篇》、乙种《官篇》、随州孔家坡汉简《星官篇》、九店楚简《日书》等等(以下依次简称为《睡甲除》《睡甲星》《睡乙官》《孔简星官》《九店日书》)。学者们认为这是一种“二十八宿纪日法”,刘乐贤先生对此做了概括总结,并认为:“大概古代的日躔记录广为人知,日者在选定哪些星宿作为各月的朔宿时,很可能沿用了这些日躔纪录。”(笔者案:实际情况要复杂得多)孔庆典则认为:“二十八宿纪日由实际天文历法而来,但岁差的作用会导致实际日躔渐渐偏离各月值宿。这大概就是二十八宿纪日最终成为选择术的原因之一。”(笔者案:二十八宿纪日来源于早期精度比较粗疏的月宿历,后来在此基础上形成一种占法,与岁差无关)
值得一提的是,《九店日书》明确有“朔于”二字,原文残缺,刘乐贤将其中楚月名转换成秦月名并将缺文补释完全,整理为:正月朔于营室,二月奎,三月胃,四月毕,五月东井,六月柳,七月张,八月角,九月氐,十月心,十一月斗,十二月须女。
现将以上文献中月份及星宿对应的情况详列如表4所示。
以上罗列的这些证据似乎都在指认一件事实,那便是:西汉初六壬式盘上“正、二、三……十二”这十二个数字指的是朔望月,每个数字对应的宿名为当月朔日所在之星宿。
不过,支持节气月的证据也有,最具分量的有三条。
一是学界普遍认为二十四节气在战国时期已经形成,这从侧面说明,以当时的天文观测技术,比较精确地确定日躔并非困难的事。事实上,古人通过观察昏旦中星或者观察偕日升和偕日落的星辰來推算日躔的历史相当悠久,笔者曾经讨论过,至少7500年前的先民就已经懂得冬至前后日躔奎宿。
在《礼记·月令》中有每月日躔及昏旦中星的完整记载,如:“孟春之月,日在营室,昏参中,旦尾中……仲春之月,日在奎,昏弧中,旦建星中……”这里孟春、仲春、季春等等显然是指节气月,每月日躔与西汉初六壬式盘所记基本相同。不同之处在于《月令》孟秋之月日在翼,季秋之月日在房,孟冬之月日在尾,而式盘上相应的月份分别标注在张宿、氐宿、心宿之上。岁差使冬至点逐年西退,则显然《月令》所记日躔的年代比西汉式盘要早,其观测年代最迟在战国晚期是可以肯定的。《吕氏春秋·十二纪》也有类似记载。
第二条理由是,与西汉六壬式盘同时出土的还有一个观测天象的仪器,上有二十八宿距度(见图3)。我们知道中国古人以太阳沿黄道运行一周为365又1/4度,每天行1度。这个仪器以实物形式展示了当时的天文测量已经达到了以日躔来确定二十八宿度数的水平。把这两件同墓出土的物件放在一起比较,我们当然会首先考虑式盘上的数字是指节气月。
放马滩秦简也有月份与日躔星度相配的实物记载。
角十二,亢十二:□□八月;
氐十一,房十:□□九月;
心十一、十二,尾九,箕十: 十月;
斗二十二,牛……:□□十一月;
婺女……,虚十四:□□十二月;
危……,营室……,东壁……:正月;
奎十五,娄十三:□□二月;
胃十四、十三,昴十五:□三月;
毕十五,觜巂六,参九:□四月;
东井……,舆鬼……:□五月;
柳……,七星十三:□□六月;
张十三,翼十三,轸十五:□七月。
这个材料充分证明在那个时代可以用朔望月的月序来表示节气月。
第三条理由是,如果西汉六壬式盘上标注的月份是朔望月,怎么保证历年历月的朔日能够固定在某宿上呢?笔者按照四分历十九年七闰的编制规则对秦历(闰月为后九月)做了简单推算,结果表明,某月的朔日并不能固定在某宿,前后跨越了30度。其实古人早已论述过这个道理。《后汉书·律历志》引《月令章句》:“孟春以立春为节,惊蛰为中。中必在其月,节不必在其月。据孟春之惊蛰在十六日以后,立春在正月;惊蛰在十五日以前,立春在往年十二月。”孙希旦撰《礼记集解》:“然朔日有定,而节气先后不同,则合朔所在不可定指为何宫何宿。以正月言之,如立春在朔日以前,日月固会于亥宫矣。如在二日以后,则合朔仍在前宫玄枵之次,固《记》(指《礼记》,笔者注)不言辰但言日也。”
以上三条理由可以证明西汉式盘上的月份是指节气月而非朔望月,这是以节气月为基础的“日在加时”占法。彼时虽然没有形成十二月将的名称,但是其内核已经具备了。
正反双方的证据旗鼓相当,反复考量之后笔者判断西汉六壬式盘上的月序既是朔望月,也是节气月;进一步说,西汉太初改历之前存在一种月宿历法,其朔宿即是该节气之日躔,由月宿可知朔宿,由朔宿可知月序,若某月朔宿度数提前该节气之日躔超过一定限度则置闰,显然这种闰法既不是无中气置闰也不是后九月置闰。
三、先秦历法演变概况 [21]
先民通过立表测影和观察星象,知道了一个回归年(太阳年)大约366天;通过观察月亮的圆缺,知道了一个月是29至30天,一个太阴年大约355天,太阳年与太阴年相差大约10至11天。当四个仲月来临之时,在黄昏观测南中天,如果发现当月所对应的中星(鸟、火、虚、昴)明显落后,则设置一个闰月,以使星象和历法相符。《尚书·尧典》:“日中星鸟,以殷仲春……日永星火,以正仲夏……宵中星虚,以殷仲秋……日短星昴,以正仲冬……期三百有六旬有六日,以闰月定四时,成岁。”这段话生动地记载了先民观象授时的方法,其粗疏是难以想象的。
至殷商,殷历尚处于观象制历向推步历法过渡的阶段,此时纪日以干支,纪月以朔望,纪年以四气,年分平闰,月有大小,闰法的创制以端正四气为原则;至西周,其历法是在殷历的基础上发展起来的阴阳合历,在根本上与殷历并无不同。但是,周代历法独重月相,这一点与殷历明显不同。
这些月相的名称有旁死霸、哉死霸、既死霸、旁生霸、生霸、既生霸、既望等等。圍绕这些名称的含义,产生了月相四分说、月相定点说,笔者认为后者更符合实际。但是,月相与历日(初一朔、初三朏、十五望、月末晦等等)如何对应,学者的观点并不统一。
另外,殷商和西周早期的历法,月首为“朔”还是“朏”呢?冯时先生根据殷商乙酉月食之年一至八月的历谱分析,认为殷历的历月只能始于朔而不始于朏,殷历和西周早期的历法都以朔为月首,可能是通过观察残月和新月而取其中间的时刻而得到的。显然,这种方法认识的朔与现代天文学意义上的朔并不具有相同的概念,后者是指日月黄经差为零的时刻,这一现象显然无法看到,只能靠推步获得。然而当时的推步历并不精确,月首与实朔之间误差一两天并不奇怪。
对春秋时代的鲁历,张培瑜先生通过对《春秋经》记载的37次日食的研究,认为有32次属于观测实录,并得出“鲁国历法月相完全合天,步朔相当准确”的结论。张先生认为:“春秋时期,由观象授时发展到先期推步制定历法的阶段还为时不久,尚未形成如古六历、三统历、四分历等完整统一的年月日朔闰气的严格推步体系。斯时日至测量还不够准确,闰月设置尚欠规范。因此相应的岁首建正并非十分固定。”春秋早期岁首基本建丑,但是到鲁成公以后就大致建子了。大约在公元前七世纪中后期的鲁僖公、文公时代基本上掌握了十九年七闰的章法,在能够比较准确的测定日至的日期后,就有意识地以含冬至之月作为岁首。不过,春秋鲁国后期的历法设置闰月还有一定的随意性,有超过十分之一的年份岁首有一个月的出入。可能是日至测影还不够精密,且不能排除气候、气象等因素。到战国时期,学者已经掌握了日躔月离的推步,“千里之日至可坐而致也”,但春秋或更早期的学者或许还做不到这一点。
以上,简要梳理了由殷商至战国以前的天文历法由观象授时向推步过渡的情况,这个过程也体现了人们对星空的熟悉程度的加深和观测技术的日趋精密。而推步历的标志除了冬至的更精确测定之外,还有二十八宿体系的建立以及各宿距度的测定。
四、二十八宿传统距度与古度 [22]
二十八宿距度分为两种,《淮南子》和《汉书·律历志》所记以及《开元占经》中记录的石氏宿度为传统距度,《开元占经》记载的刘向《洪范传》宿度、西汉汝阴侯墓出土的天文盘宿度以及放马滩秦简《日书》所记宿度均为古度(以下简称《洪范传》古度、汝阴侯占盘古度、放简古度)。
现将传统距度、《洪范传》、汝阴侯占盘、放简古度整理如表5所示。
潘鼐先生以古度考察了《礼记·月令》《吕氏春秋·十二纪》《逸周书·月令解》日躔及昏旦中星的记载,认为在不拘泥于距星和宿度的情况下,基本适合春秋时期,彼时日躔二十八宿只能看作大略位置。“可以确证《礼记·月令》的天象,系春秋中后期所观测;当以公元前620±100年为十二个月日躔二十八宿的时期。”
结合鲁国的历法在春秋中后期的变化,潘先生说:“周正历法的使用年代,与《礼记·月令》观测年代平均为公元前620年,即鲁文公七年亦正相合。这时,约当二十八宿已经成立的年代的下限。”他又说:“古度实为我国最早的科学的恒星观测资料。石氏度则为公元前五世纪中叶继之而起的较精确的观测结果,已是进一步发展的科学成果了。”潘先生还计算了以牵牛上星为距,冬至点在牵牛一度或一度余的测定年代下限为公元前510年左右,应用于颛顼历,采用二十八宿古度。
近年来考古学上的新发现中的确有证据表明春秋晚期已经形成了完善的二十八宿距度体系。2006年12月至2008年8月发掘的安徽蚌埠双墩一号春秋晚期钟离国君墓葬第三层是自中央圆形区域向外辐射的二十条宽窄不均的放射遗迹(图4),冯时先生考证认为这是二十八宿按照龙(角、亢、氐、房、心、尾)、箕、斗、牛、女、虚、危、定(营室、东壁)、奎、娄、胃、昴、毕、虎(觜、参)、井、鬼、柳、星、鸟(张、翼)、轸二十象合并宿度所形成的天区投影,并指出,“墓中二十个放射区域如果是以‘象及二十八宿距星为标准所建立的天区,那么这将意味着至少在西元前六世纪春秋晚期以前,二十八宿体系显然已经相当完善,而且作为一个恒星观测体系,无疑已具有了明确的距度划分。”
另,2006年底在河南南阳徐家岭墓葬区发掘出土的夫人鼎,经专家考证此鼎铸于公元前507年,其上铭文考释为:“唯正月初吉,岁在涒滩,孟春在奎之际……”铭文的意义重大,首先是太岁纪年的行用年代大为提前至春秋晚期,其次说明二十八宿体系在当时已经形成而且具有完善的距度划分,可用于系统地观测和纪时。
针对前人的研究,有关问题需要进一步探讨。
首先,潘先生认为“可以确证《礼记·月令》的天象,系春秋中后期所观测;当以公元前620±100年为十二个月日躔二十八宿的时期”,这个结论是以节气月为标准得出的吗?从潘先生介绍的计算方法看,“以孟春之月的月初,太阳位于营室为起点,取二十八宿按石氏宿度从室宿、壁宿依次排到虚宿、危宿,排满365.25度,再将太阳行程按每月30.4375日,一日行一度,亦按十二个月,顺序排列同周天二十八宿位置做对比”,这显然是节气月(平气)的计算方法。然而,春秋时期存在二十四节气吗?潘先生没有说。进而可以提出疑问,在没有二十四节气的时代会存在节气月吗?
笔者认为,不管春秋晚期有沒有形成二十四节气的名称,但是已经有了节气月的实质。
理由之一是, 夫人鼎铭文“孟春在奎之际”表明当时的确存在节气月的日躔记录,虽然我们仅仅凭这一句话无法了解十二个月日躔的全貌,但至少可以判断这与《吕氏春秋·十二纪》《礼记·月令》上的日躔属于同一种类型。
理由之二,夫人鼎太岁纪年的铭文“岁在涒滩”表明当时早已存在岁星纪年了(因为岁星纪年比太岁纪年更早),那么十二次也应该已经产生,彼时的天算家用十二辰来标注这十二个区域并以此来标记日躔,逻辑上完全成立。
理由之三,公元前590年以后,鲁历基本建子并出现十九年七闰的规律,这说明已经出现了四分历的雏形,冬至点的测定已经比较准确,并以冬至点为基准,把太阳的视运动轨迹按照一周天365.25度平均分成十二份,使冬至、夏至、春分、秋分居于所在节气月的中点上,实际步算是类似于《淮南子·天文训》介绍的方法:“斗指子则冬至……加十五日指癸则小寒……加十五日指丑是大寒……加十五日指报德之维,则越阴在地,故曰距日冬至四十六日而立春……”这样形成的十二个月的日躔其实是算出来的,只有冬至点是借助了立表测影技术测出来的。
另外,二十八宿古度是指《开元占经》记载的刘向《洪范传》宿度、西汉汝阴侯墓出土的天文盘宿度以及放马滩秦简《日书》记载的宿度,三者有一些差别(参见表4)。那么,古度从建立之初至西汉初年是不是处于演变之中呢?笔者认为答案是肯定的,笔者甚至认为古度之前可能还存在更古的度数,相关问题还需要作进一步研究。
概言之,春秋早期岁首基本建丑,但是到鲁成公(公元前590年)以后岁首就大致建子,并形成了十九年七闰的规律,这说明当时已经能够比较准确的测定冬至了。本文据此认为,四分历的雏形正是形成在这个时期,当时的天算家完全具备能力以冬至点为基准计算出各“节气月”(姑且这样称呼)的日躔。因此,二十八宿距度体系的建立应该是以公元前590年为下限。
五、“月宿历”之来源 [23]
前面梳理了早期历法的演变,可以看到这是一个由粗疏渐至精密的过程。“月宿历”兼具观象授时历与推步历的性质,只能产生在两者之间的过渡期。在那样的年代,既不能比较准确地确定冬至日躔,也不能将月首精确到一日之内,也即月首与实朔之间的误差比较大。后来,虽然观测精度提高了,产生了新的历法、占法,但是那些古老的形式并没有彻底消失,而是一直流传到后世。
月宿历法产生的首要条件是:编制者需要理解“日月交会”这件事。日月在恒星背景中逐日东行,一年中交会12次形成12个朔望月。虽然不能用肉眼观察到日月交会,但是有证据表明,至迟5000年前的先民已经理解了这件事。在距今5000年前的郑州大河村两件复原的彩陶上画着12个太阳,这12个太阳显然不能理解为按照日躔轨迹均分的节气月(或太阳月),因为直到春秋晚期人们才具备这样的能力。而众多的考古材料显示,从7000年前以来,中国农历便是阴阳合历。那么,这12个太阳只能理解为一年中日月12次交会在黄道上的示意图。商代用什么词汇来描述日月交会尚不清楚,但是今天所用的“朔”实际上在《诗经》中已经出现了。《小雅·十月之交》“十月之交,朔月辛卯。日有食之,亦孔之丑”,这是公元前8世纪辛卯日发生的日食。这是传世文献中人们已经懂得日月交会的确凿证据。
编制月宿历法的第二个条件是:彼时已经形成了二十八宿。甚至可以认为二十八宿与月宿历是相伴而生的,而二十八宿产生在何时,至今尚未有定论,或许在西周,或许更早。
月宿历法得以形成的第三个条件是:观月相而知日序,观月宿而可以逆推朔宿以确定月序。西周初期的历法独重月相,笔者认为这种月相的细分表明当时人们迫切想确定月首和日序,从而确定日躔(月序),这样做正是“月宿历法”的编制所必需。《吕氏春秋·贵因》所说“推步者,视月行而知晦朔也”即是此意。
综上,笔者认为月宿历的编制不会早于西周初期,不会晚于西周末期。但事实上,并不能排除西周以前就存在月宿历的可能,正如不能断定西周以前不存在二十八宿。若是,其粗疏程度只能比西周更甚。
“月宿历”形成以来沿用了很长时间。到公元前590年左右,古人通过观测确定了冬至,确定了一年的长度是365.25天,掌握了十九年七闰的规律,形成了最初的四分历。此时,月首、岁首以及日躔的测定都还在摸索和完善之中。由于计算的需要,二十八宿距度体系(古度)应运而生。由于当时还不能准确观测各节气月的日躔,所以用月宿历间接推算日躔的误差并不能被发现,一直沿用了下去。因此,月宿历并未消失。
再后来,随着观测精度和计算能力的逐步提高,终于在战国时期,石申夫用当时的先进手段重新整理了二十八宿体系,形成了传统距度。
中国农历实行无中气置闰是从西汉太初历开始的,春秋晚期至秦以来的诸侯国历法虽然同属四分历,但其岁首和闰月的编制五花八门。前面提到的那些战国秦汉时期的出土日书和式盘告诉我们:
其一,春秋晚期以来直至西汉太初改历之前产生的众多历法中,有一种月宿历与四分历结合的产物,其朔望月与节气月的月序相同,朔日在节气之后。
其二,若朔日提前节气超过月亮一日之行程(13古度),则设置一个闰月(这与无中气置闰、后九月置闰显著不同)。这一条是笔者的推测,论证工作非常复杂,笔者将另立专题研究。
战国时期形成的广狭过于悬殊的二十八宿传统距度体系并不适合编制月宿历,所以春秋时期形成的古度体系一直沿用到西汉初期,这就是战国秦汉时期的出土式盘和日书还在记录二十八宿古度体系的原因。但笔者非常怀疑在古度之前还有更古老的距度体系,二十八宿的宽窄会更平均,基本上可以保证月亮日行一宿的目测需要。
六、宋元王梦占之解析 [26]
月宿占法虽然看上去是通过计算某日月亮位于某宿来占卜吉凶,但其实它暗含了求日躔的方法。也即,通过观察月相以及月离某宿,便可以推算出当时日躔的位置,即朔宿。然后通过“日在加时”占法来推算事情的吉凶。在那个观测精度不高的时代,这种方法是智慧的。因此,月宿占法不过是“日在加时”占法的变形而已,或者更准确的说,前者是后者的早期形式,二者具有渊源关系,属于同一个数术门类,所以在后期的大六壬文献中依然可以找到月宿占法的材料。
成书于东汉末期的《吳越春秋》记载的几例发生在春秋晚期的式占,虽然我们认为彼时没有那样复杂的占法,但是当时存在比较原始的式占形式,这些形式流传到后世作为文人作文章的素材,又在原始占法的基础上揉入了汉代的高级成分,这是合乎情理的。
而《龟策列传》所载宋元王梦占也属于类似情况,其中既有月宿占法,也有“日在加时”占法,下面笔者就对与本论题关系密切的语句作一番解读。
仰天而视月之光,观斗所指,定日处乡。规矩为辅,副以权衡。四维已定,八卦相望。视其吉凶,介虫先见……今昔壬子,宿在牵牛。河水大会,鬼神相谋。汉正南北,江河固期,南风新至,江使先来。白云壅汉,万物尽留。斗柄指日,使者当囚。
原文已知宋元王做梦的时间在夜半,惊醒之后便将卫平博士请来占梦。本文开篇已讨论这个梦占不会发生在冬至时节,因为彼时乌龟已经冬眠,渔民也很少外出打鱼,即使打鱼也不大可能选择在半夜作业。
故事发生的季节和月份没有明说,其实暗含在占文中:“汉正南北,江河固期,南风新至,江使先来。”一说到汉正南北,只有两种可能,一是日躔斗宿附近,一是日躔井宿附近,在春秋末期至西汉年间只有巳(孟夏)、亥(孟冬)两月的中下旬的夜半才有银河在头顶横亘南北的天象,后面又说南风新至,显然是孟夏。
那么“仰天而视月之光”的含义就清楚了,这是说通过观察月相和月亮处于哪一个星宿的位置,可以推算当时的日躔,即朔宿。文中说“宿在牵牛”,也即月离牵牛,并非日躔牵牛。因此,清人钱大昕、张文虎和近人严敦杰三位先生都将式占的时间定为冬至后子月是错误的。根据日躔月离的位置可以反过来推算这一天大概是农历十六或十七。
“观斗所指”既可以定日躔,也可以定时辰。知道日躔、时辰、斗杓所指三者之二,就可以推算其余。现在我们知道日躔井宿、夜半两个因素,当然可以推算出斗杓指昴宿。
“规矩为辅,副以权衡”,规矩指方形的地盘,权衡代表北斗,指天盘。卫平观察了月相和北斗之后,便用式盘来辅助演算。“四维已定,八卦相望”,这是说将式盘摆好,东西南北对正,天地人鬼四门无差错,八卦的方位不偏倚。
“介虫先见”大概是指事情发生在壬子日夜半子时,正是北方玄武所值,玄武即是乌龟(介虫)和腾蛇的合称。
“今昔壬子,宿在牵牛。河水大会,鬼神相谋”,这是说壬子日五行属水,月宿牵牛在银河,所以叫“河水大会”。此时此刻,“我们”来占梦(与鬼神相谋)。
“白云壅汉,万物尽留”,这是说此时(占梦的这个时间)有白云飘过来,好像堵塞了银河,万物不流通,暗示乌龟被劫持了。这属于以外应取象定吉凶。
后文又说“斗柄指日,使者当囚”,斗柄指日,是说斗杓指向地盘上壬子日之天干壬寄宫的亥支(营室、东壁两宿的位置),这是卫平占梦的时间,那么很容易推算出太阳已经运行到了地盘的尾、箕两宿,正当寅时。
后文还说宋元王立马派人去泉阳寻龟,在打鱼人豫且家将其找到,回返途中“出于泉阳之门。正昼无见,风雨晦冥”,此时已经天亮了,但乌云密布,风雨飘摇。注意,这里用的是“风雨”,而不是“风雪”,也证明当时并非寒冬之际。整个故事的发生、发展紧凑有序、精彩传神。
七、小结 [27]
本文以《史记·龟策列传》宋元王占梦为线索,以众多出土文献和传世文献为依据,追溯了大六壬“日在加时”占法的起源,挖掘出观象授时历向推步历过渡的形态:月宿历。新石器时代的先民就已经关注日月的运行,西周初期人们已经可以比较准确的分辨月相,彼时形成了月相与二十八宿相结合的月宿历法,人们已经懂得用月宿纪日,以朔宿纪月,随后形成了“月宿占法”,这是“日在加时”占法的原始形式。公元前590年前后能够比较准确地测定冬至,并形成了最早的二十八宿矩度体系,彼时古人可能借用岁星十二次对逐月日躔进行过粗略计算,并形成了十九年七闰的四分历的雏形。随着观测精度提高,到战国初期,石申夫对二十八宿距度进行过修正并得到传统距度体系。至迟在此时,二十四节气已经形成。至西汉太初改历,“日在加时”占法逐步完善。在这个过程中,月宿历的精度逐步提升,其朔望月与节气月的月序相同,朔日在节气之后,其置闰规则与无中气置闰、后九月置闰显著不同。从月宿占法的演变,我们可以看到中国古代天文学发展的脉络,并对数术学的思想有所体会。
(责任编辑:陈 真 责任校对:杨翌琳)