home *** CD-ROM | disk | FTP | other *** search
- /* REXX ================================================================ */
- /* */
- /* Name : DAT2.CMD */
- /* Datum : 09.03.1996 */
- /* */
- /* Autor : Gert Massheimer */
- /* eMail : GertMassheimer@swol.de 2:2476/62@fidonet */
- /* */
- /* Funktion : OS/2-Gegenstück zum DOS-Programm DatScreen von */
- /* Carsten Kruse [2:248/4002]. */
- /* Dieses Script erzeugt einen Begrüßungsbildschirm für */
- /* eine BBS. Dabei wird ein Spruch (Zitat) für den Tag, */
- /* sowie ein Kalenderblatt angezeigt. */
- /* */
- /* Syntax : OS/2-Rexx */
- /* Änderung : 03.08.1997 */
- /* */
- /* ===================================================================== */
-
- Call Init
-
- /* Fehlerauswertung */
-
- Signal on Halt /* Abbruch bei Fehler */
- Signal on NoValue /* Leere Variable */
- Signal on Syntax /* Falsche Befehls-Syntax */
-
- /* --------------------------------------------------------------------- */
- /* Hauptprogramm */
- /* --------------------------------------------------------------------- */
-
- CLS = '1B'x'[2J'; BG = '1B'x'[0;40m'
-
- Say ' DAT2 v0.04 "Hello!" door for mailbox systems'
- Say ' Freeware (c) by Gert Massheimer'
- Say ' If you like it mail me: 2:2476/62@fidonet or GertMassheimer@swol.de'
- Say '';
-
- Parse Upper Arg Show
-
- If (Show = '/?') | (Show = '-?') |,
- (Show = '/H') | (Show = '-H') then do
- Say ' DAT2 [-h] | [-s]'
- Say ' -h views this help screen'
- Say ' -s types the result of building the ANSI file(s)'
- Exit
- End
- If Show = '-S' then Show = 1
-
- Call Read_Config
-
- If Shadow = 1 then ShadowChar = SColor || '▒'
- Else ShadowChar = ''
-
- /* Header erstellen =================================================== */
-
- HeaderLength = Format(HeaderLength,2 ,0)
- Test = HeaderLength / 2
- If Length(Test) > 2 then HeaderLength = HeaderLength + 1
- HPos = Copies(' ', (76 - HeaderLength) / 2)
- LeftFrame = BG || HPos || FColor || Site || ' '
- RightFrame = ' '|| FColor_3D || Site || ShadowChar || BG
- TopHeaderLine = CLS || BG || HPos || FColor ||,
- ULC || Copies(URow, HeaderLength + 2) || URC || BG
- HeaderLine = LeftFrame || NewHeader || RightFrame
- BottomHeaderLine = BG || HPos || FColor ||,
- LLC || FColor_3D ||Copies(LRow, HeaderLength + 2) ||,
- LRC || ShadowChar || BG
-
- /* Vorlagen.Txt lesen und auswerten =================================== */
-
- Tmp_File = 'Msg.$$$'
- D_File = 'Vorlagen.Txt'
- Call SysFileDelete Tmp_File
- Call Read_Date_File
-
- If (Stream(Tmp_File, 'C', 'Query Exist') = '') & (AllDayMsg \= 'N')
- then Call Read_AllDays_File
- If (Stream(Tmp_File, 'C', 'Query Exist') = '') & (AllDayMsg = 'N')
- then Exit
-
- /* JederTag.Txt lesen und auswerten =================================== */
-
- Call Read_Day_File
-
- /* Holy_Day.Txt lesen und auswerten =================================== */
-
- Tmp_File = 'Msg.$$1'
- D_File = 'Holy_Day.Txt'
- Call SysFileDelete Tmp_File
- Call Read_Date_File
- Call Read_Cal_File
-
- /* Message erstellen ================================================== */
-
- MsgLineLength = Format(MsgLineLength,2 ,0)
- Test = MsgLineLength / 2
- If Length(Test) > 2 then MsgLineLength = MsgLineLength + 1
- MPos = Copies(' ', (76 - MsgLineLength) / 2)
- TopMsgLine = BG || MPos || FColor ||,
- ULC || Copies(URow, MsgLineLength + 2) || URC || BG
- BottomMsgLine = BG || MPos || FColor ||,
- LLC || FColor_3D || Copies(LRow, MsgLineLength + 2) ||,
- LRC || ShadowChar || BG
-
- /* Footer erstellen =================================================== */
-
- FooterLength = Format(FooterLength,2 ,0)
- Test = FooterLength / 2
- If Length(Test) > 2 then FooterLength = FooterLength + 1
- FPos = Copies(' ', (80 - FooterLength) / 2)
- FooterLine = BG || FPos || NewFooter
-
- /* Pause-Zeile erstellen ============================================== */
-
- Select
- When Pause = 'I' then PauseLine = Copies(PauseSign, T + 2)
- When Pause = 'R' then PauseLine = Copies(PauseSign, Random(1, 7))
- When Pause = 0 then PauseLine = ''
- When (Pause >= 1) | (Pause <= 7) then PauseLine = Copies(PauseSign, Pause)
- When Pause > 7 then PauseLine = Copies(PauseSign, 7)
- Otherwise PauseLine = ''
- End
-
- /* ANSI-Datei schreiben =============================================== */
-
- If Shadow = 1 then ShadowChar = SColor || '▒'
- Else ShadowChar = ''
-
- ANS_File = OutDir || '\' || OutName || '.ANS'
- Call SysFileDelete ANS_File
- Say ' Writing' ANS_File '...'
- Call Stream ANS_File, 'C', 'Open write'
- Call LineOut ANS_File, TopHeaderLine
- Call LineOut ANS_File, HeaderLine
- Call LineOut ANS_File, BottomHeaderLine
- If Shadow = 1 then
- Call LineOut ANS_File, BG ||HPos || ' ' || SColor ||,
- Copies('▒', Headerlength + 4)
- Call LineOut ANS_File, ''
- Call LineOut ANS_File, TopMsgLine
- If TextForm = 'C' then do
- Do I = 1 to T
- Call LineOut ANS_File, BG || MPos || FColor || Site || ' ' || TColor ||,
- Center(MsgLine.I, MsgLineLength) ||,
- FColor || ' ' || FColor_3D || Site || ShadowChar || BG
- End
- End
- If TextForm = 'L' then do
- Do I = 1 to T
- Call LineOut ANS_File, BG || MPos || FColor || Site || ' ' || TColor ||,
- Left(Strip(MsgLine.I,, '~'), MsgLineLength) ||,
- FColor || ' ' || FColor_3D || Site || ShadowChar || BG
- End
- End
- Call LineOut ANS_File, BottomMsgLine
- If Shadow = 1 then
- Call LineOut ANS_File, BG ||MPos || ' ' || SColor ||,
- Copies('▒', MsgLinelength + 4)
- Call LineOut ANS_File, ''
- Call LineOut ANS_File, FooterLine
- Call LineOut ANS_File, PauseLine
- Call LineOut ANS_File, EnterMsg
-
- /* Kallenderblatt schreiben =========================================== */
-
- If Translate(Calendar) \= 'N' then do
- If CalFile \= 'N' then do
- Call Stream ANS_File, 'C', 'Close'
- ANS_File = OutDir || '\' || CalFile || '.ANS'
- Call SysFileDelete ANS_File
- Call Stream ANS_File, 'C', 'Open write'
- End
- CalColor = '1B'x'[0;47;30m'
- If Date('W') = 'Sunday' then NumColor = '1B'x'[1;47;31m'
- Else NumColor = '1B'x'[0;47;34m'
-
- If Shadow = 1 then do
- CalSColor = '1B'x'[30;1;40m'
- ShadowChar = CalSColor || '▒'
- End
- Else ShadowChar = ''
-
- Call FrameSet1
-
- ToDay = RxDate()
- Select
- When (Translate(Days_2000) \= 'N') &,
- (Translate(Days_2000) \= 'M') &,
- (Translate(SubStr(SubWord(Days_2000, 1, 1), 1, 1)) \= 'C') then do
- FinalDate = RxDate('01/01/2000') - ToDay
- Select
- When FinalDate = 0 then
- DateLine = 'Hallo neues Jahrtausend!'
- When FinalDate < 0 then do
- FinalDate = ToDay - RxDate('01/01/2000')
- DateLine = 'Schon' FinalDate 'Tage seit dem 1.1.2000!'
- End
- Otherwise NOP
- DateLine = 'Noch' FinalDate 'Tage bis zum 1.1.2000!'
- End
- End
- When (Translate(Days_2000) \= 'N') &,
- (Translate(Days_2000) = 'M') then do
- FinalDate = RxDate('01/01/2001') - ToDay
- Select
- When FinalDate = 0 then
- DateLine = 'Hallo neues Jahrtausend!'
- When FinalDate < 0 then do
- FinalDate = ToDay - RxDate('01/01/2001')
- DateLine = 'Schon' FinalDate 'Tage seit der Jahrtausendwende!'
- End
- Otherwise NOP
- DateLine = 'Noch' FinalDate 'Tage bis zum neuen Jahrtausend!'
- End
- End
- When Translate(SubStr(SubWord(Days_2000, 1, 1), 1, 1)) = 'C' then do
- FstWords = ''; SecWords = ''; TargetDate = ToDay
- Parse Value Days_2000 with Custom','FstWords'###'SecWords'$'TargetDate
- Parse Value TargetDate with TDay'.'TMonth'.'TYear
- TargetDate = TMonth || '/' || TDay || '/' || TYear
- FinalDate = RxDate(TargetDate) - ToDay
- DateLine = Strip(FstWords) FinalDate Strip(SecWords)
- End
- Otherwise NOP
- End
-
- CPos = Copies(' ', 14)
- TopCalLine = BG || CPos || CalColor || ULC || Copies(URow, 48) ||,
- URC || BG
- EmptyCalLine = BG || CPos || CalColor || Site || Copies(' ', 48) ||,
- Site || ShadowChar || BG
- BottomCalLine = BG || CPos || CalColor || LLC || Copies(LRow, 48) ||,
- LRC || ShadowChar || BG
- LeftCalFrame = BG || CPos || CalColor || Site
- RightCalFrame = CalColor || Site || ShadowChar || BG
- CalText = LeftCalFrame || Center(CalText, 48) || RightCalFrame
-
- Call Interpret_Date
-
- NumLine1 = LeftCalFrame || NumColor ||,
- Center(Pos11 || Pos21 || ' ' || Pos31 || Pos41 || ' ', 48) ||,
- RightCalFrame
- NumLine2 = LeftCalFrame || NumColor ||,
- Center(Pos12 || Pos22 || ' ' || Pos32 || Pos42 || ' ', 48) ||,
- RightCalFrame
- If NumSet = 1 then
- NumLine3 = LeftCalFrame || NumColor ||,
- Center(Pos13 || Pos23 || ZP || ' ' || Pos33 || Pos43 || ZP, 48) ||,
- RightCalFrame
- Else
- NumLine3 = LeftCalFrame || NumColor ||,
- Center(Pos13 || Pos23 || ZP || Pos33 || Pos43 || ZP, 48) ||,
- RightCalFrame
-
- Call LineOut ANS_File, CLS
- Call LineOut ANS_File, ''
- Call LineOut ANS_File, ''
- Call LineOut ANS_File, TopCalLine
- Call LineOut ANS_File, EmptyCalLine
- Call LineOut ANS_File, CalText
- Call LineOut ANS_File, EmptyCalLine
- Call LineOut ANS_File, NumLine1
- Call LineOut ANS_File, NumLine2
- Call LineOut ANS_File, NumLine3
- Call LineOut ANS_File, EmptyCalLine
- Do I = 1 to C_LNo
- Call LineOut ANS_File, BG || CPos || CalColor || Site ||,
- Center(CalLine.I, 48) || Site || ShadowChar || BG
- End
- If Translate(Days_2000) \= 'N' then do
- Call LineOut ANS_File, EmptyCalLine
- Call LineOut ANS_File, BG || CPos || CalColor || Site ||,
- Center(DateLine, 48) || Site || ShadowChar || BG
- End
- Call LineOut ANS_File, EmptyCalLine
- Call LineOut ANS_File, BottomCalLine
- If Shadow = 1 then do
- Call LineOut ANS_File, BG || Copies(' ', 15) || CalSColor ||,
- Copies('▒', 50) || BG
- Call LineOut ANS_File, ''
- End
- Call LineOut ANS_File, CalPauseLine
- Call LineOut ANS_File, EnterMsg
- End
-
- Call Stream ANS_File, 'C', 'Close'
-
- If Show = 1 then do
- '@Type' OutDir || '\' || OutName || '.ANS'
- If CalFile \= 'N' then '@Type' OutDir || '\' || CalFile || '.ANS'
- End
-
- Exit
-
- /* --------------------------------------------------------------------- */
- /* Default-Konfiguration lesen */
- /* --------------------------------------------------------------------- */
-
- Read_Config:
- Cfg_File = 'DAT2.CFG'
- Say ' Reading configuration file...'
- If Stream(Cfg_File, 'C', 'Query Exist') = '' then do
- Say ' Sorry, could not find ' || Cfg_File
- Say ' Please check your configuration!'
- Exit
- End
- Call Stream Cfg_File, 'C', 'Open read'
- Do While Lines(Cfg_File) = 1
- Line = LineIn(Cfg_File)
- If (SubStr(Line, 1, 2) = '//') | (Length(Line) = 0) then Iterate
- Keyword = Translate(Word(Line, 1))
- Info = Word(Line, 2); LongInfo = DelWord(Line,1,1)
- Select
- When Keyword = '*BBSNAME:' then BBSName = LongInfo
- When Keyword = '*SYSOPFIRSTNAME:' then FName = LongInfo
- When Keyword = '*SYSOPLASTNAME:' then LName = LongInfo
- When Keyword = '*SHOWLASTNAME:' then do
- SLName = Translate(Info)
- If SLName = 'N' then SLName = ''
- Else SLName = LName
- End
- When Keyword = '*OUTPUTPATH:' then OutDir = Info
- When Keyword = '*OUTPUTNAME:' then OutName = Info
- When Keyword = '*BGCOLOR:' then BGColor = Info
- When Keyword = '*FRAMECOLOR:' then
- FColor = '1B'x'[' || BGColor || ';1;' || Info || 'm'
- When Keyword = '*HEADERCOLOR:' then do
- HeaderColor = Info
- HColor = '1B'x'[' || BGColor || ';1;' || Info || 'm'
- End
- When Keyword = '*BBSNAMECOLOR:' then
- BBSColor = Info
- When Keyword = '*TEXTCOLOR:' then
- TColor = '1B'x'[' || BGColor || ';1;' || Info || 'm'
- When Keyword = '*FRAMESET:' then do
- FrameSet = Info
- Select
- When Info = 1 then Call FrameSet1
- When Info = 2 then Call FrameSet2
- When Info = 3 then Call FrameSet3
- When Info = 4 then Call FrameSet4
- When Info = 5 then Call FrameSet5
- When Info = 6 then Call FrameSet6
- When Info = 7 then Call FrameSet7
- When Info = 8 then Call FrameSet8
- When (C2D(Info) >= 49) | (C2D(Info) <= 56) then
- Call FrameSetX Info
- Otherwise Call FrameSet1
- End
- End
- When Keyword = '*SHADOW:' then do
- Shadow = Translate(Info)
- IF Shadow \= 'N' then Shadow = 1
- Else Shadow = 0
- End
- When Keyword = '*SHADOWCOLOR:' then
- SColor = '1B'x'[' || Info || ';1;40m'
- When Keyword = '*3D_EFECT:' then do
- D3_Efect = Translate(Info)
- If D3_Efect \= 'N' then FColor_3D = '1B'x'[0;' || BGColor || ';30m'
- Else FColor_3D = FColor
- End
- When Keyword = '*ALLDAYMESSAGE:' then AllDayMsg = Translate(Info)
- When Keyword = '*ENTERMESSAGE:' then do
- EnterMsg = Translate(Info)
- IF EnterMsg \= 'N' then
- EnterMsg = '1B'x'[0;37m'Copies(' ', 29) || 'Bitte <Enter> druecken'
- End
- When Keyword = '*SPACES:' then do
- Spaces = Info
- If EnterMsg = 'N' then EnterMsg = Copies(' ', Spaces) || ''
- End
- When Keyword = '*ALIAS:' then do
- Alias = LongInfo
- If Translate(Alias) = 'N' then Alias = FName SLName
- End
- When Keyword = '*PAUSE:' then Pause = Translate(Info)
- When Keyword = '*PAUSESIGN:' then PauseSign = LongInfo
- When Keyword = '*NEWHEADER:' then do
- Newhead = LongInfo
- If Translate(NewHead) = 'N' then do
- NewHeader = '1B'x'[' || BGColor || ';1;33m' ||,
- ' Willkommen in der' || '1B'x'[' ||,
- BBSColor || 'm' BBSName || ' '
- HeaderLength = 20 + Length(BBSName)
- End
- Else do
- NewHead = ' ' || NewHead || ' '
- NewHeader = '1B'x'[' || BGColor || ';1;33m' || Strip(NewHead)
- HeaderLength = Length(NewHead)
- End
- End
- When Keyword = '*NEWFOOTER:' then do
- If Translate(LongInfo) = 'N' then do
- NewFooter = '1B'x'[40;1;33m' ||,
- 'Viel Spass wuenscht Dir Dein SysOp'||,
- '1B'x'[' || BBSColor || 'm' Strip(Alias)
- FooterLength = 37 + Length(Strip(Alias))
- End
- Else do
- LongInfo = ' ' || LongInfo || ' '
- NewFooter = '1B'x'[40;1;33m' Strip(LongInfo)
- FooterLength = Length(LongInfo)
- End
- End
- When Keyword = '*CALENDAR:' then Calendar = Info
- When Keyword = '*CALTEXT:' then do
- CalText = LongInfo
- If Translate(CalText) = 'N' then do
- Select
- When Date('W') = 'Monday' then Tag = 'Montag'
- When Date('W') = 'Tuesday' then Tag = 'Dienstag'
- When Date('W') = 'Wednesday' then Tag = 'Mittwoch'
- When Date('W') = 'Thursday' then Tag = 'Donnerstag'
- When Date('W') = 'Freyday' then Tag = 'Freitag'
- When Date('W') = 'Saturday' then Tag = 'Samstag'
- When Date('W') = 'Sunday' then Tag = 'Sonntag'
- Otherwise NOP
- End
- CalText = 'Kalenderblatt fuer' Tag || ', den:'
- End
- End
- When Keyword = '*CALNUMSET:' then do
- NumSet = Info
- Select
- When NumSet = 1 then Call Read_Number_Set1
- When NumSet = 2 then Call Read_Number_Set2
- When NumSet = 3 then Call Read_Number_Set3
- Otherwise Read_Number_Set1
- End
- End
- When Keyword = '*CALPAUSE:' then do
- CalPause = Info
- Select
- When Translate(CalPause) = 'N' then CalPauseLine = ''
- When (CalPause >= 1) | (CalPause <= 3)
- then CalPauseLine = Copies(PauseSign, CalPause)
- When CalPause > 3 then CalPauseLine = Copies(PauseSign, 3)
- Otherwise CalPauseLine = ''
- End
- End
- When Keyword = '*CALFILE:' then CalFile = Info
- When Keyword = '*DAYS_2000:' then Days_2000 = LongInfo
- Otherwise NOP
- End
- End
- Call Stream Cfg_File, 'C', 'Close'
- Return
-
- /* --------------------------------------------------------------------- */
- /* Vorlagen.Txt bzw. Holy_Day.Txt lesen */
- /* --------------------------------------------------------------------- */
-
- Read_Date_File:
- Parse Value Date('U') with MM '/' DD '/' YY
- Say ' Reading date file...'
- If Stream(D_File, 'C', 'Query Exist') = '' then do
- Say ' Sorry, could not find ' || D_File
- Say ' Please check your configuration!'
- Exit
- End
- Call Stream D_File, 'C', 'Open read'
- Do While Lines(D_File) = 1
- Line = LineIn(D_File)
- If (SubStr(Line, 1, 2) = '//') then Iterate
- If Word(Line, 1) = MM || '-' || DD then do
- Call Stream Tmp_File, 'C', 'Open write'
- Do until Word(MLine, 1) = '/***/'
- MLine = LineIn(D_File)
- If MLine \= '/***/' then Call LineOut Tmp_File, MLine
- End
- Call Stream Tmp_File, 'C', 'Close'
- End
- End
- Call Stream D_File, 'C', 'Close'
- Return
-
- /* --------------------------------------------------------------------- */
- /* JederTag.Txt lesen */
- /* --------------------------------------------------------------------- */
-
- Read_AllDays_File:
- A_File = 'JederTag.Txt'
- Say ' Reading all days file...'
- If Stream(A_File, 'C', 'Query Exist') = '' then do
- Say ' Sorry, could not find ' || A_File
- Say ' Please check your configuration!'
- Exit
- End
- Call Stream A_File, 'C', 'Open read'
- C = 0; CNo = ''; LNo = 0
- Do While Lines(A_File) = 1
- LNo = LNo + 1
- Line = LineIn(A_File)
- If (SubStr(Line, 1, 2) = '//') then Iterate
- If Word(Line, 1) = '/***/' then do
- C = C + 1; A.C = LNo
- End
- End
- TextNo = Random(1, C - 1)
- StartLine = A.TextNo
- Call Stream A_File, 'C', 'Close'
- Call Stream A_File, 'C', 'Open read'
- SearchLine = 0
- Do While Lines(A_File) = 1
- SearchLine = SearchLine + 1
- Call LineIn(A_File)
- If SearchLine = StartLine then do
- Call Stream Tmp_File, 'C', 'Open write'
- Do until Word(MLine, 1) = '/***/'
- MLine = LineIn(A_File)
- If MLine \= '/***/' then Call LineOut Tmp_File, MLine
- End
- Call Stream Tmp_File, 'C', 'Close'
- End
- End
- Call Stream A_File, 'C', 'Close'
- Return
-
- /* --------------------------------------------------------------------- */
- /* Tagesspruch einlesen */
- /* --------------------------------------------------------------------- */
-
- Read_Day_File:
- Say ' Reading daily file...'
- Call Stream Tmp_File, 'C', 'Open read'
- FirstLine = LineIn(Tmp_File)
- Call Stream Tmp_File, 'C', 'Close'
- FirstWord = Word(FirstLine, 1)
- If SubStr(FirstWord,1,1) = '~' then TextForm = 'L'
- Else TextForm = 'C'
- Call Stream Tmp_File, 'C', 'Open read'
- T = 0
- Do While Lines(Tmp_File) = 1
- T = T + 1; T1 = T - 1
- MsgLine.T = LineIn(Tmp_File)
- L.T = Length(MsgLine.T)
- End
- MsgLineLength = 0
- Do I = 1 to T
- If L.I > MsgLineLength then MsgLineLength = L.I
- End
- Call Stream Tmp_File, 'C', 'Close'
- Return
-
- /* --------------------------------------------------------------------- */
- /* Kalenderspruch einlesen */
- /* --------------------------------------------------------------------- */
-
- Read_Cal_File:
- Say ' Reading calendar file...'
- If Stream(Tmp_File, 'C', 'Query Exist') = '' then do
- C_LNo = 3
- CalLine.1 = 'Fuer heute ist mir kein'
- CalLine.2 = 'besonderes Ereignis bekannt.'
- CalLine.3 = 'Ich wuensche noch einen schoenen Tag!'
- Return
- End
- Call Stream Tmp_File, 'C', 'Open read'
- C_LNo = 0
- Do While Lines(Tmp_File) = 1
- C_LNo = C_LNo + 1
- CalLine.C_LNo = LineIn(Tmp_File)
- End
- Call Stream Tmp_File, 'C', 'Close'
- Return
-
- /* --------------------------------------------------------------------- */
- /* Die Zahlen */
- /* --------------------------------------------------------------------- */
-
-
- Read_Number_Set1:
- ZP = '∞'
- Z.0.1 = '╓──╖'; Z.0.2 = '║ ║'; Z.0.3 = '╙──╜'
- Z.1.1 = ' ─╖'; Z.1.2 = ' ║'; Z.1.3 = ' ╨'
- Z.2.1 = '╓──╖'; Z.2.2 = '╓──╜'; Z.2.3 = '╙──╜'
- Z.3.1 = '╓──╖'; Z.3.2 = ' ─╢'; Z.3.3 = '╙──╜'
- Z.4.1 = '╥ ╥'; Z.4.2 = '╙──╢'; Z.4.3 = ' ╨'
- Z.5.1 = '╓──╖'; Z.5.2 = '╙──╖'; Z.5.3 = '╙──╜'
- Z.6.1 = '╓──╖'; Z.6.2 = '╟──╖'; Z.6.3 = '╙──╜'
- Z.7.1 = '───╖'; Z.7.2 = ' ─╢'; Z.7.3 = ' ╨'
- Z.8.1 = '╓──╖'; Z.8.2 = '╟──╢'; Z.8.3 = '╙──╜'
- Z.9.1 = '╓──╖'; Z.9.2 = '╙──╢'; Z.9.3 = '╙──╜'
- Return
-
- Read_Number_Set2:
- ZP = ' ▀'
- Z.0.1 = ' █▀█'; Z.0.2 = ' █ █'; Z.0.3 = ' ▀▀▀'
- Z.1.1 = ' ▄█ '; Z.1.2 = ' █ '; Z.1.3 = ' ▀▀▀'
- Z.2.1 = ' ▀▀█'; Z.2.2 = ' █▀▀'; Z.2.3 = ' ▀▀▀'
- Z.3.1 = ' ▀▀█'; Z.3.2 = ' ▀█'; Z.3.3 = ' ▀▀▀'
- Z.4.1 = ' █ █'; Z.4.2 = ' ▀▀█'; Z.4.3 = ' ▀'
- Z.5.1 = ' █▀▀'; Z.5.2 = ' ▀▀█'; Z.5.3 = ' ▀▀▀'
- Z.6.1 = ' █▀▀'; Z.6.2 = ' █▀█'; Z.6.3 = ' ▀▀▀'
- Z.7.1 = ' ▀▀█'; Z.7.2 = ' █ '; Z.7.3 = ' ▀ '
- Z.8.1 = ' █▀█'; Z.8.2 = ' █▀█'; Z.8.3 = ' ▀▀▀'
- Z.9.1 = ' █▀█'; Z.9.2 = ' ▀▀█'; Z.9.3 = ' ▀▀▀'
- Return
-
- Read_Number_Set3:
- ZP = ' .'
- Z.0.1 = ' ...'; Z.0.2 = ' : :'; Z.0.3 = ' :.:'
- Z.1.1 = ' .. '; Z.1.2 = ' : '; Z.1.3 = ' .:.'
- Z.2.1 = ' ...'; Z.2.2 = ' .:'; Z.2.3 = ' :..'
- Z.3.1 = ' ...'; Z.3.2 = ' .:'; Z.3.3 = ' ..:'
- Z.4.1 = ' : :'; Z.4.2 = ' :.:'; Z.4.3 = ' :'
- Z.5.1 = ' ...'; Z.5.2 = ' :..'; Z.5.3 = ' ..:'
- Z.6.1 = ' ...'; Z.6.2 = ' :..'; Z.6.3 = ' :.:'
- Z.7.1 = ' ...'; Z.7.2 = ' .:'; Z.7.3 = ' : '
- Z.8.1 = ' ...'; Z.8.2 = ' :.:'; Z.8.3 = ' :.:'
- Z.9.1 = ' ...'; Z.9.2 = ' :.:'; Z.9.3 = ' ..:'
- Return
-
- Interpret_Date:
- M1 = SubStr(MM, 1, 1); M2 = SubStr(MM, 2, 1)
- D1 = SubStr(DD, 1, 1); D2 = SubStr(DD, 2, 1)
- Do I = 0 to 9
- If I = D1 then do
- Pos11 = Z.I.1; Pos12 = Z.I.2; Pos13 = Z.I.3
- End
- End
- Do I = 0 to 9
- If I = D2 then do
- Pos21 = Z.I.1; Pos22 = Z.I.2; Pos23 = Z.I.3
- End
- End
- Do I = 0 to 9
- If I = M1 then do
- Pos31 = Z.I.1; Pos32 = Z.I.2; Pos33 = Z.I.3
- End
- End
- Do I = 0 to 9
- If I = M2 then do
- Pos41 = Z.I.1; Pos42 = Z.I.2; Pos43 = Z.I.3
- End
- End
- Return
-
- FrameSet1:
- ULC = '┌' /* 218 */
- URC = '┐' /* 191 */
- LLC = '└' /* 192 */
- LRC = '┘' /* 217 */
- Site = '│' /* 179 */
- URow = '─' /* 196 */
- LRow = '─' /* 196 */
- Return
-
- FrameSet2:
- ULC = '╔' /* 201 */
- URC = '╗' /* 187 */
- LLC = '╚' /* 200 */
- LRC = '╝' /* 188 */
- Site = '║' /* 186 */
- URow = '═' /* 205 */
- LRow = '═' /* 205 */
- Return
-
- FrameSet3:
- ULC = '╓' /* 214 */
- URC = '╖' /* 183 */
- LLC = '╙' /* 211 */
- LRC = '╜' /* 189 */
- Site = '║' /* 186 */
- URow = '─' /* 196 */
- LRow = '─' /* 196 */
- Return
-
- FrameSet4:
- ULC = '╒' /* 213 */
- URC = '╕' /* 184 */
- LLC = '╘' /* 212 */
- LRC = '╛' /* 190 */
- Site = '│' /* 179 */
- URow = '═' /* 205 */
- LRow = '═' /* 205 */
- Return
-
- FrameSet5:
- ULC = '╔' /* 201 */
- URC = '╗' /* 187 */
- LLC = '╚' /* 200 */
- LRC = '╝' /* 188 */
- Site = '│' /* 179 */
- URow = '─' /* 196 */
- LRow = '─' /* 196 */
- Return
-
- FrameSet6:
- ULC = '+' /* 43 */
- URC = '+' /* 43 */
- LLC = '+' /* 43 */
- LRC = '+' /* 43 */
- Site = '|' /* 124 */
- URow = '-' /* 45 */
- LRow = '-' /* 45 */
- Return
-
- FrameSet7:
- ULC = '+' /* 43 */
- URC = '+' /* 43 */
- LLC = '+' /* 43 */
- LRC = '+' /* 43 */
- Site = '!' /* 33 */
- URow = '-' /* 45 */
- LRow = '-' /* 45 */
- Return
-
- FrameSet8:
- ULC = '█' /* 219 */
- URC = '█' /* 219 */
- LLC = '█' /* 219 */
- LRC = '█' /* 219 */
- Site = '█' /* 219 */
- URow = '▀' /* 223 */
- LRow = '▄' /* 220 */
- Return
-
- FrameSetX:
- Parse Arg Info
- ULC = Info
- URC = Info
- LLC = Info
- LRC = Info
- Site = Info
- URow = Info
- LRow = Info
- Return
-
- /* --------------------------------------------------------------------- */
- /* Rexx initialisierten */
- /* --------------------------------------------------------------------- */
-
- Init:
- /* Rexx initialisieren */
-
- If RxFuncQuery('SysLoadFuncs') then do
- Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
- Call SysLoadFuncs
- End
-
- If RxFuncQuery('RxDate') then
- Call RxFuncAdd 'RxDate', 'RexxDate', 'RxDate'
-
- Return
-
- /* --------------------------------------------------------------------- */
- /* Fehlerauswertung */
- /* --------------------------------------------------------------------- */
-
- Halt:
- Say '1B'x'[1;31;40m' /* Setze Farbe hell Rot auf Schwarz */
- Say 'Programm angehalten in Zeile:' sigl'.'
- Bad_Code = sigl
- Signal Bad_Running
- Return
-
- NoValue:
- Say '1B'x'[1;31;40m' /* Setze Farbe hell Rot auf Schwarz */
- Say 'Fehlender Wert in Zeile:' sigl'.'
- Bad_Code = sigl
- Signal Bad_Running
- Return
-
- Syntax:
- Say '1B'x'[1;31;40m' /* Setze Farbe hell Rot auf Schwarz */
- Say 'Program Syntax Fehler in Zeile:' sigl'.'
- Bad_Code = sigl
- Signal Bad_Running
- Return
-
- Bad_Running:
- Say '1B'x'[1;31;40m' /* Setze Farbe hell Rot auf Schwarz */
- Say 'Der Fehler ist:"'Sourceline(Bad_Code)'"'
- Exit
- Return
-